package com.example.myapplication.DesignPatterns.strategy;

import com.example.myapplication.thirdcamera.util.Log;

import java.math.BigDecimal;

/**
 * 客户端
 * 策略模式定义：
 *
 * 定义一组算法，将每个算法都封装起来，
 * 并且使他们之间可以互换，实际上，就是将每个算法分离出来，
 * 定义一个公共的接口，可以选择性的实现功能，这就是策略模式。
 *
 * 应用场景：
 * 可以应用在商场打折促销活动，例如 六一期间，商场搞促销活动，会员8折 ，普通客户不打折等等。
 *
 * 结构：
 * 1、公共策略：定义一个接口作为公共策略，所有的算法规则实现该接口；
 * 2、具体策略：封装了具体的算法和行为，继承于公共策略；
 * 3、封装类：进行二次封装，维护对公共策略对象的引用；
 */
public class StrategyClient {
    public static void main(String[] args) {
        VIPCustomer vipCustomer = new VIPCustomer();
        PreferentialContent content = new PreferentialContent(vipCustomer);
        BigDecimal price = content.getPrice(new BigDecimal(1000));
        Log.i("dove","折扣优惠价："+price);
        System.out.println("折扣优惠价："+price);
    }
}
